Robotics FASE Toolbox
Project information
- Category: Robotics / Software Development
- Focus: Robotic Modelling Symbolic Computing Kinematics & Dynamics Mobile Robotics Simulation Controllability Analysis
- Tech Stack: Python SymPy NumPy Matplotlib
- Status: 🚧 Work in Progress
- Official Repository
Overview
A symbolic robotics toolbox built in Python using SymPy, designed to model, analyse, and control robotic systems using exact symbolic mathematics rather than numerical approximations. It covers two domains: serial manipulators and autonomous mobile robots (AMR).
For manipulators, given a joint string (e.g. "RRR" or "2R1P"), the toolbox automatically
computes forward kinematics via DH parameters, the geometric Jacobian $J(q)$, and the full
Lagrangian dynamics — inertia matrix $M(q)$, Coriolis vector $c(q,\dot{q})$, and gravity
vector $G(q)$ — with configurable per-link inertia-tensor assumptions.
The AMR module derives kinematic models $\dot{q} = G(q)\,u$ from explicit Pfaffian constraints or from built-in presets (Unicycle, Bicycle RWD/FWD, Car-with-Trailer with articulated body support). Models are integrated numerically (Euler / RK4) through a multi-robot Environment, rendered via a static and animated Displayer, and analysed for controllability through iterated Lie brackets.
Key Elements
Manipulator Modelling
From a joint string, automatically derives the DH kinematic chain, geometric Jacobian, and full Lagrangian dynamics with configurable per-link inertia-tensor assumptions.
$$\tau = M(q)\ddot{q} + c(q,\dot{q}) + G(q)$$
Kinematic Model Derivation
Builds $\dot{q} = G(q)\,u$ from Pfaffian constraints (null-space method) or from four built-in presets, including a 5-DOF Car-with-Trailer with articulated body rendering.
$$A^\top(q)\,\dot{q} = 0 \;\Rightarrow\; G = \ker A^\top$$
Multi-Robot Simulation
A shared Environment runs multiple robots with independent inputs via Euler or RK4, logging all trajectories. The Displayer renders them as static or frame-by-frame animated plots.
Controllability Analysis
Computes the involutive closure of the input distribution via iterated Lie brackets, checking whether the control matrix reaches full rank (STLC).
$$[g_i,g_j] = \tfrac{\partial g_j}{\partial q}g_i - \tfrac{\partial g_i}{\partial q}g_j$$
Contacts
Get in touch with me!